import { loginAPI, getProfileAPI } from '@/api/user'
import { setToken, getToken, removeToken } from '@/utils/auth' // 为了Token持久化，因为已刷新页面就会丢失
export default {
  namespaced: true, // 开启命名空间 默认为false
  // 组件中使用user模块中的数据?
  //this.$store.state.user.name
  // 组件触发mutation?
  // this.$store.commit('user/mutation name')
  // 组件触发action?
  // this.$store.dispatch('user/action name' )

  // 数据状态 响应式 data
  state: {
    token: getToken() || '', // 获取cookie中的token,
    profile: {}, // 用户信息
  },
  // 同步修改state的唯一方法
  mutations: {
    setToken(state, newToken) {
      state.token = newToken
      // 将token存储到cookie中 也存一份
      setToken(newToken)
    },
    clearUserData(state) {
      state.token = '' // 清空vuex中的token
      state.profile = {} // 清空用户信息
      removeToken()  // 清空cookie中的token
    },
    // 设置用户信息
    setProfile(state, profile) {
      // profile 就是一个新值
      state.profile = profile
    }
  },
  // 异步修改state的唯一方法
  actions: {
    async setLoginToken(ctx, { username, password }) {
      // 1. 调用接口
      const res = await loginAPI({ username, password })
      // 2. 提交mutation
      ctx.commit('setToken', res.data.token)
    },
    // 用户信息的接口调用
    async getProfile(ctx) {
      const res = await getProfileAPI()
      ctx.commit('setProfile', res.data)
      console.log(res.data);
      return res.data.permissions

    }
  }
}
